<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<!-- Mirrored from www.wolfssl.com/wolfSSL/Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7.html by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 17 Jan 2017 13:44:15 GMT -->
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8" /><!-- /Added by HTTrack -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="Generator" content="iWeb 3.0.4"/>
<meta name="iWeb-Build" content="local-build-20170103"/>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
<meta name="viewport" content="width=770"/>
<title>wolfSSL - Docs | wolfCrypt Manual - Chapter 18.31 (PKCS#7)</title>
<link rel="stylesheet" type="text/css" media="screen,print" href="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7.css"/>
<!--[if lt IE 8]><link rel='stylesheet' type='text/css' media='screen,print' href='Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7IE.css'/><![endif]-->
<!--[if gte IE 8]><link rel='stylesheet' type='text/css' media='screen,print' href='Media/IE8.css'/><![endif]-->
<script type="text/javascript" src="Scripts/iWebSite.js"></script>
<script type="text/javascript" src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7.js"></script>
<meta name="description" content="wolfSSL - Docs | wolfCrypt Manual - Chapter 18.31 (PKCS#7)"/><meta name="keywords" content="embedded ssl, ssl library, embedded security, openssl alternative, ssl api, ssl, tls, cyassl, openssl replacement, openssl api, ssl functions, small openssl, smart grid, connected home, ecc, lightweight ssl, suite b, encryption security software, ssl inspection"/><meta name="robots" content="follow,index"/> <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','../../www.google-analytics.com/analytics.js','ga');ga('create','UA-64826966-1','auto');ga('send','pageview');</script>
 
<script>//<![CDATA[
window.zEmbed||function(e,t){var n,o,d,i,s,a=[],r=document.createElement("iframe");window.zEmbed=function(){a.push(arguments)},window.zE=window.zE||window.zEmbed,r.src="javascript:false",r.title="",r.role="presentation",(r.frameElement||r).style.cssText="display: none",d=document.getElementsByTagName("script"),d=d[d.length-1],d.parentNode.insertBefore(r,d),i=r.contentWindow,s=i.document;try{o=s}catch(c){n=document.domain,r.src='javascript:var d=document.open();d.domain="'+n+'";void(0);',o=s}o.open()._l=function(){var o=this.createElement("script");n&&(this.domain=n),o.id="js-iframe-async",o.src=e,this.t=+new Date,this.zendeskHost=t,this.zEQueue=a,this.body.appendChild(o)},o.write('<body onload="document._l();">'),o.close()}("../../assets.zendesk.com/embeddable_framework/main.js","wolfssl.zendesk.com");
//]]></script>
  </head>
<body style="background: rgb(255, 255, 255); margin: 0pt; " onload="onPageLoad();">
<div style="text-align: center; ">
<div style="margin-bottom: 20px; margin-left: auto; margin-right: auto; margin-top: 20px; overflow: hidden; position: relative; word-wrap: break-word;  background: rgb(255, 255, 255); text-align: left; width: 770px; " id="body_content">
<div style="float: left; margin-left: 0px; position: relative; width: 770px; z-index: 0; " id="nav_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div style="clear: both; height: 0px; line-height: 0px; " class="spacer"> </div>
</div>
<div style="float: left; height: 0px; line-height: 0px; margin-left: 0px; position: relative; width: 770px; z-index: 10; " id="header_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
</div>
<div style="margin-left: 0px; position: relative; width: 770px; z-index: 5; " id="body_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div id="id1" style="height: 38px; left: 375px; position: absolute; top: 157px; width: 361px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_361_38" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style">wolfSSL Manual</p>
</div>
</div>
</div>
<div id="id2" style="height: 24px; left: 193px; position: absolute; top: 122px; width: 268px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_268_24" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_1"><a class="class1" title="Docs.html" href="Docs.html">Docs</a> <span class="style">-&gt;</span> <span class="style_1">wolfSSL Manual</span></p>
</div>
</div>
</div>
<div style="height: 1px; width: 698px;  height: 1px; left: 37px; position: absolute; top: 220px; width: 698px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 698px; ">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_1.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 698px; "/>
</div>
</div>
<div style="height: 37px; width: 545px;  height: 37px; left: 191px; position: absolute; top: 80px; width: 545px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 545px; ">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_2.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 545px; "/>
</div>
</div>
<div id="id3" style="height: 25px; left: 200px; position: absolute; top: 84px; width: 43px; z-index: 1; " class="style_SkipStroke_1 shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_43_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_2"><a class="class2" title="Home.html" href="Home.html">Home</a></p>
</div>
</div>
</div>
<div id="id4" style="height: 25px; left: 365px; position: absolute; top: 84px; width: 72px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_72_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class3" title="https://wolfssl.com/wolfSSL/download/downloadForm.php" href="https://wolfssl.com/wolfSSL/download/downloadForm.php">Download</a></p>
</div>
</div>
</div>
<div id="id5" style="height: 25px; left: 439px; position: absolute; top: 84px; width: 59px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_59_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class4" title="License.html" href="License.html">License</a></p>
</div>
</div>
</div>
<div id="id6" style="height: 25px; left: 499px; position: absolute; top: 84px; width: 44px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_44_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class5" title="Blog/Blog.html" href="Blog/Blog.html">Blog</a></p>
</div>
</div>
</div>
<div id="id7" style="height: 25px; left: 589px; position: absolute; top: 84px; width: 80px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_80_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class6" title="Community.html" href="Community.html">Community</a></p>
</div>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 245px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_3.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 296px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_4.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 363px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_5.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 438px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_6.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 498px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_7.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 589px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_8.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div id="id8" style="height: 25px; left: 671px; position: absolute; top: 84px; width: 61px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_61_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class7" title="Contact.html" href="Contact.html">Contact</a></p>
</div>
</div>
</div>
<div id="id9" style="height: 25px; left: 249px; position: absolute; top: 84px; width: 44px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_44_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_2"><a class="class8" title="About.html" href="About.html">About</a></p>
</div>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 670px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_9.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div id="id10" style="height: 25px; left: 298px; position: absolute; top: 84px; width: 63px; z-index: 1; " class="style_SkipStroke_1 shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_63_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class9" title="Products.html" href="Products.html">Products</a></p>
</div>
</div>
</div>
<div id="id11" style="height: 25px; left: 549px; position: absolute; top: 84px; width: 41px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_41_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_2"><a class="class10" title="Docs.html" href="Docs.html">Docs</a></p>
</div>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 545px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_10.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div id="id12" style="height: 27px; left: 634px; position: absolute; top: 224px; width: 102px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_102_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_4"><a class="class11" title="Docs-wolfssl-manual-18-32-wolfcrypt-api-poly1305.html" href="Docs-wolfssl-manual-18-32-wolfcrypt-api-poly1305.html">Next Chapter</a></p>
</div>
</div>
</div>
<div id="id13" style="height: 25px; left: 35px; position: absolute; top: 224px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_5"><a class="class12" title="Docs-wolfssl-manual-18-30-wolfcrypt-api-memory.html" href="Docs-wolfssl-manual-18-30-wolfcrypt-api-memory.html">Previous Chapter</a></p>
</div>
</div>
</div>
<div style="height: 22px; width: 22px;  height: 22px; left: 33px; position: absolute; top: 191px; width: 22px; z-index: 1; " class="tinyText style_SkipStroke_2">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/PDF.png" alt="" style="border: none; height: 22px; width: 22px; "/>
</div>
<div id="id14" style="height: 25px; left: 323px; position: absolute; top: 224px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_6"><a title="Docs-wolfssl-manual-toc.html" href="Docs-wolfssl-manual-toc.html">Table of Contents</a></p>
</div>
</div>
</div>
<div id="id15" style="height: 4822px; left: 35px; position: absolute; top: 281px; width: 701px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_701_4822" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-top: 0pt; " class="paragraph_style_7">Chapter 18: wolfCrypt API Reference<br/></p>
<p class="paragraph_style_7"><br/></p>
<p class="paragraph_style_8">18.31 PKCS#7<br/></p>
<p class="paragraph_style_8"><br/></p>
<p class="paragraph_style_9">The functions in this section expose PKCS#7 functionality to calling applications.<span class="style_2"><br/></span></p>
<p class="paragraph_style_10"><br/></p>
<p class="paragraph_style_10"><br/></p>
<div class="paragraph paragraph_style_10"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_11.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_10"><br/></p>
<p class="paragraph_style_11"><br/></p>
<p class="paragraph_style_11">wc_PKCS7_InitWithCert<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/pkcs7.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_PKCS7_InitWithCert(PKCS7* pkcs7, byte* cert, word32 certSz);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Description:<br/></p>
<p class="paragraph_style_9">This function initializes a PKCS7 structure with a DER-formatted certificate. To initialize an empty PKCS7 structure, one can pass in a NULL cert and 0 for certSz. <br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: Returned on successfully initializing the PKCS7 structure<br/></p>
<p class="paragraph_style_9"><span class="style_3">MEMORY_E</span>: Returned if there is an error allocating memory with XMALLOC<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_PARSE_E</span>: Returned if there is an error parsing the cert header<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_OBJECT_ID_E</span>: Returned if there is an error parsing the encryption type from the cert<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_EXPECT_0_E</span>: Returned if there is a formatting error in the encryption specification of the cert file<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_BEFORE_DATE_E</span>: Returned if the date is before the certificate start date<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_AFTER_DATE_E</span>: Returned if the date is after the certificate expiration date<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_BITSTR_E</span>: Returned if there is an error parsing a bit string from the certificate<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_NTRU_KEY_E</span>: Returned if there is an error parsing the NTRU key from the certificate<br/></p>
<p class="paragraph_style_9"><span class="style_3">ECC_CURVE_OID_E</span>: Returned if there is an error parsing the ECC key from the certificate<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_UNKNOWN_OID_E</span>: Returned if the certificate is using an unknown key object id<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_VERSION_E</span>: Returned if the ALLOW_V1_EXTENSIONS option is not defined and the certificate is a V1 or V2 certificate<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: Returned if there is an error processing the certificate extension<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_CRIT_EXT_E</span>: Returned if an unfamiliar critical extension is encountered in processing the certificate<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_SIG_OID_E</span>: Returned if the signature encryption type is not the same as the encryption type of the certificate in the provided file<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_SIG_CONFIRM_E</span>: Returned if confirming the certification signature fails<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_NAME_INVALID_E</span>: Returned if the certificate’s name is not permitted by the CA name constraints<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_NO_SIGNER_E</span>: Returned if there is no CA signer to verify the certificate’s authenticity<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">pkcs7</span> - pointer to the PKCS7 structure in which to store the decoded cert<br/></p>
<p class="paragraph_style_9"><span class="style_3">cert</span>  - pointer to a buffer containing a DER formatted ASN.1 certificate with which to initialize the PKCS7 structure<br/></p>
<p class="paragraph_style_9"><span class="style_3">certSz</span> - size of the certificate buffer<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Example:<br/></p>
<p class="paragraph_style_13">PKCS7 pkcs7;<br/></p>
<p class="paragraph_style_13">byte derBuff[] = { /* initialize with DER-encoded certificate */ };<br/></p>
<p class="paragraph_style_13">if ( wc_PKCS7_InitWithCert(&amp;pkcs7, derBuff, sizeof(derBuff)) != 0 ) {<br/></p>
<p class="paragraph_style_13">// error parsing certificate into pkcs7 format<br/></p>
<p class="paragraph_style_13">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">See Also:<br/></p>
<p class="paragraph_style_9">wc_PKCS7_Free<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_12.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_11"><br/></p>
<p class="paragraph_style_11">wc_PKCS7_Free<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/pkcs7.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">void wc_PKCS7_Free(PKCS7* pkcs7);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Description:<br/></p>
<p class="paragraph_style_9">This function releases any memory allocated by a PKCS7 initializer.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Return Values:<br/></p>
<p class="paragraph_style_9">No return value for this function.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">pkcs7</span> - pointer to the PKCS7 structure to free<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Example:<br/></p>
<p class="paragraph_style_13">PKCS7 pkcs7;<br/></p>
<p class="paragraph_style_13">// initialize and use PKCS7 object<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">wc_PKCS7_Free(pkcs7);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">See Also:<br/></p>
<p class="paragraph_style_9">wc_PKCS7_InitWithCert<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_13.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_11"><br/></p>
<p class="paragraph_style_11">wc_PKCS7_EncodeData<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/pkcs7.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_PKCS7_EncodeData(PKCS7* pkcs7, byte* output, word32 outputSz);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Description:<br/></p>
<p class="paragraph_style_9">This function builds the PKCS7 data content type, encoding the PKCS7 structure into a buffer containing a parsable PKCS7 data packet.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Return Values:<br/></p>
<p class="paragraph_style_9">On successfully encoding the PKCS7 data into the buffer, returns the index parsed up to in the PKCS7 structure. This index also corresponds to the bytes written to the output buffer.<br/></p>
<p class="paragraph_style_9">BUFFER_E: Returned if the given buffer is not large enough to hold the encoded certificate<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">pkcs7</span> - pointer to the PKCS7 structure to encode<br/></p>
<p class="paragraph_style_9"><span class="style_3">output</span> - pointer to the buffer in which to store the encoded certificate<br/></p>
<p class="paragraph_style_9"><span class="style_3">outputSz</span> - size available in the output buffer<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Example:<br/></p>
<p class="paragraph_style_13">PKCS7 pkcs7;<br/></p>
<p class="paragraph_style_13">int ret;<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">byte derBuff[] = { /* initialize with DER-encoded certificate */ };<br/></p>
<p class="paragraph_style_13">byte pkcs7Buff[FOURK_BUF];<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">wc_PKCS7_InitWithCert(&amp;pkcs7, derBuff, sizeof(derBuff));<br/></p>
<p class="paragraph_style_13">// update message and data to encode<br/></p>
<p class="paragraph_style_13">pkcs7.privateKey = key;<br/></p>
<p class="paragraph_style_13">pkcs7.privateKeySz = keySz;<br/></p>
<p class="paragraph_style_13">pkcs7.content = data;<br/></p>
<p class="paragraph_style_13">pkcs7.contentSz = dataSz;<br/></p>
<p class="paragraph_style_13">... etc.<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">ret = wc_PKCS7_EnocodeData(&amp;pkcs7, pkcs7Buff, sizeof(pkcs7Buff));<br/></p>
<p class="paragraph_style_13">if ( ret != 0 ) {<br/></p>
<p class="paragraph_style_13">// error encoding into output buffer<br/></p>
<p class="paragraph_style_13">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">See Also:<br/></p>
<p class="paragraph_style_9">wc_PKCS7_InitWithCert<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_14.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_11"><br/></p>
<p class="paragraph_style_11">wc_PKCS7_EncodeSignedData<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/pkcs7.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_PKCS7_EncodeSignedData(PKCS7* pkcs7, byte* output, word32 outputSz);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Description:<br/></p>
<p class="paragraph_style_9">This function builds the PKCS7 signed data content type, encoding the PKCS7 structure into a buffer containing a parsable PKCS7 signed data packet.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Return Values:<br/></p>
<p class="paragraph_style_9">On successfully encoding the PKCS7 data into the buffer, returns the <span class="style_3">index</span> parsed up to in the PKCS7 structure. This index also corresponds to the bytes written to the output buffer.<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: Returned if the PKCS7 structure is missing one or more required elements to generate a signed data packet<br/></p>
<p class="paragraph_style_9"><span class="style_3">MEMORY_E</span>: Returned if there is an error allocating memory<br/></p>
<p class="paragraph_style_9"><span class="style_3">PUBLIC_KEY_E</span>: Returned if there is an error parsing the public key<br/></p>
<p class="paragraph_style_9"><span class="style_3">RSA_BUFFER_E</span>: Returned if there is an error during RSA signing<br/></p>
<p class="paragraph_style_9"><span class="style_3">BUFFER_E</span>: Returned if the given buffer is not large enough to hold the encoded certificate<br/></p>
<p class="paragraph_style_9"><span class="style_3">MP_INIT_E</span>, <span class="style_3">MP_READ_E</span>, <span class="style_3">MP_CMP_E</span>, <span class="style_3">MP_INVMOD_E</span>, <span class="style_3">MP_EXPTMOD_E</span>, <span class="style_3">MP_MOD_E</span>, <span class="style_3">MP_MUL_E</span>, <span class="style_3">MP_ADD_E</span>, <span class="style_3">MP_MULMOD_E</span>, <span class="style_3">MP_TO_E</span>, and <span class="style_3">MP_MEM</span> may be returned if there is an error generating the signature<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">pkcs7</span> - pointer to the PKCS7 structure to encode<br/></p>
<p class="paragraph_style_9"><span class="style_3">output</span> - pointer to the buffer in which to store the encoded certificate<br/></p>
<p class="paragraph_style_9"><span class="style_3">outputSz</span> - size available in the output buffer<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Example:<br/></p>
<p class="paragraph_style_13">PKCS7 pkcs7;<br/></p>
<p class="paragraph_style_13">int ret;<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">byte derBuff[] = { /* initialize with DER-encoded certificate */ };<br/></p>
<p class="paragraph_style_13">byte pkcs7Buff[FOURK_BUF];<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">wc_PKCS7_InitWithCert(&amp;pkcs7, derBuff, sizeof(derBuff));<br/></p>
<p class="paragraph_style_13">// update message and data to encode<br/></p>
<p class="paragraph_style_13">pkcs7.privateKey = key;<br/></p>
<p class="paragraph_style_13">pkcs7.privateKeySz = keySz;<br/></p>
<p class="paragraph_style_13">pkcs7.content = data;<br/></p>
<p class="paragraph_style_13">pkcs7.contentSz = dataSz;<br/></p>
<p class="paragraph_style_13">... etc.<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">ret = wc_PKCS7_EnocodeSignedData(&amp;pkcs7, pkcs7Buff, sizeof(pkcs7Buff));<br/></p>
<p class="paragraph_style_13">if ( ret != 0 ) {<br/></p>
<p class="paragraph_style_13">// error encoding into output buffer<br/></p>
<p class="paragraph_style_13">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">See Also:<br/></p>
<p class="paragraph_style_9">wc_PKCS7_InitWithCert, wc_PKCS7_VerifySignedData<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_15.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_11"><br/></p>
<p class="paragraph_style_11">wc_PKCS7_VerifySignedData<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/pkcs7.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_PKCS7_VerifySignedData(PKCS7* pkcs7, byte* pkiMsg, word32 pkiMsgSz);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Description:<br/></p>
<p class="paragraph_style_9">This function takes in a transmitted PKCS7 signed data message, extracts the certificate list and certificate revocation list, and then verifies the signature. It stores the extracted content in the given PKCS7 structure.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: Returned on successfully extracting the information from the message<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: Returned if one of the input parameters is invalid<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_PARSE_E</span>: Returned if there is an error parsing from the given pkiMsg<br/></p>
<p class="paragraph_style_9"><span class="style_3">PKCS7_OID_E</span>: Returned if the given pkiMsg is not a signed data type<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_VERSION_E</span>: Returned if the PKCS7 signer info is not version 1<br/></p>
<p class="paragraph_style_9"><span class="style_3">MEMORY_E</span>: Returned if there is an error allocating memory<br/></p>
<p class="paragraph_style_9"><span class="style_3">PUBLIC_KEY_E</span>: Returned if there is an error parsing the public key<br/></p>
<p class="paragraph_style_9"><span class="style_3">RSA_BUFFER_E</span>: Returned if there is an error during RSA signing<br/></p>
<p class="paragraph_style_9"><span class="style_3">MP_INIT_E</span>, <span class="style_3">MP_READ_E</span>, <span class="style_3">MP_CMP_E</span>, <span class="style_3">MP_INVMOD_E</span>, <span class="style_3">MP_EXPTMOD_E</span>, <span class="style_3">MP_MOD_E</span>, <span class="style_3">MP_MUL_E</span>, <span class="style_3">MP_ADD_E</span>, <span class="style_3">MP_MULMOD_E</span>, <span class="style_3">MP_TO_E</span>, and <span class="style_3">MP_MEM</span> may be returned if there is an error during signature verification<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">pkcs7</span> - pointer to the PKCS7 structure in which to store the parsed certificates<br/></p>
<p class="paragraph_style_9"><span class="style_3">pkiMsg</span> - pointer to the buffer containing the signed message to verify and decode<br/></p>
<p class="paragraph_style_9"><span class="style_3">pkiMsgSz</span> - size of the signed message<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Example:<br/></p>
<p class="paragraph_style_13">PKCS7 pkcs7;<br/></p>
<p class="paragraph_style_13">int ret;<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">byte derBuff[] = { /* initialize with DER-encoded certificate */ };<br/></p>
<p class="paragraph_style_13">byte pkcs7Buff[FOURK_BUF];<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">wc_PKCS7_InitWithCert(&amp;pkcs7, derBuff, sizeof(derBuff));<br/></p>
<p class="paragraph_style_13">// update message and data to encode<br/></p>
<p class="paragraph_style_13">pkcs7.privateKey = key;<br/></p>
<p class="paragraph_style_13">pkcs7.privateKeySz = keySz;<br/></p>
<p class="paragraph_style_13">pkcs7.content = data;<br/></p>
<p class="paragraph_style_13">pkcs7.contentSz = dataSz;<br/></p>
<p class="paragraph_style_13">... etc.<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">ret = wc_PKCS7_EnocodeSignedData(&amp;pkcs7, pkcs7Buff, sizeof(pkcs7Buff));<br/></p>
<p class="paragraph_style_13">if ( ret != 0 ) {<br/></p>
<p class="paragraph_style_13">// error encoding into output buffer<br/></p>
<p class="paragraph_style_13">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">See Also:<br/></p>
<p class="paragraph_style_9">wc_PKCS7_InitWithCert, wc_PKCS7_EncodeSignedData<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_16.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_11"><br/></p>
<p class="paragraph_style_11">wc_PKCS7_EncodeEnvelopedData<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/pkcs7.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_PKCS7_EncodeEnvelopedData(PKCS7* pkcs7, byte* output, word32 outputSz);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Description:<br/></p>
<p class="paragraph_style_9">This function builds the PKCS7 enveloped data content type, encoding the PKCS7 structure into a buffer containing a parsable PKCS7 enveloped data packet.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Return Values:<br/></p>
<p class="paragraph_style_9">Returned on successfully encoding the message in enveloped data format, returns the <span class="style_3">size</span> written to the output buffer<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: Returned if one of the input parameters is invalid, or if the PKCS7 structure is missing required elements<br/></p>
<p class="paragraph_style_9"><span class="style_3">ALGO_ID_E</span>: Returned if the PKCS7 structure is using an unsupported algorithm type. Currently, only DESb and DES3b are supported <br/></p>
<p class="paragraph_style_9"><span class="style_3">BUFFER_E</span>: Returned if the given output buffer is too small to store the output data<br/></p>
<p class="paragraph_style_9"><span class="style_3">MEMORY_E</span>: Returned if there is an error allocating memory<br/></p>
<p class="paragraph_style_9"><span class="style_3">RNG_FAILURE_E</span>: Returned if there is an error initializing the random number generator for encryption<br/></p>
<p class="paragraph_style_9"><span class="style_3">DRBG_FAILED</span>: Returned if there is an error generating numbers with the random number generator used for encryption<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">pkcs7</span> - pointer to the PKCS7 structure to encode<br/></p>
<p class="paragraph_style_9"><span class="style_3">output</span> - pointer to the buffer in which to store the encoded certificate<br/></p>
<p class="paragraph_style_9"><span class="style_3">outputSz</span> - size available in the output buffer<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Example:<br/></p>
<p class="paragraph_style_13">PKCS7 pkcs7;<br/></p>
<p class="paragraph_style_13">int ret;<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">byte derBuff[] = { /* initialize with DER-encoded certificate */ };<br/></p>
<p class="paragraph_style_13">byte pkcs7Buff[FOURK_BUF];<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">wc_PKCS7_InitWithCert(&amp;pkcs7, derBuff, sizeof(derBuff));<br/></p>
<p class="paragraph_style_13">// update message and data to encode<br/></p>
<p class="paragraph_style_13">pkcs7.privateKey = key;<br/></p>
<p class="paragraph_style_13">pkcs7.privateKeySz = keySz;<br/></p>
<p class="paragraph_style_13">pkcs7.content = data;<br/></p>
<p class="paragraph_style_13">pkcs7.contentSz = dataSz;<br/></p>
<p class="paragraph_style_13">... etc.<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">ret = wc_PKCS7_EncodeEnvelopedData(&amp;pkcs7, pkcs7Buff, sizeof(pkcs7Buff));<br/></p>
<p class="paragraph_style_13">if ( ret != 0 ) {<br/></p>
<p class="paragraph_style_13">// error encoding into output buffer<br/></p>
<p class="paragraph_style_13">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">See Also:<br/></p>
<p class="paragraph_style_9">wc_PKCS7_InitWithCert, wc_PKCS7_DecodeEnvelopedData<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_17.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_11"><br/></p>
<p class="paragraph_style_11">wc_PKCS7_DecodeEnvelopedData<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/pkcs7.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_PKCS7_DecodeEnvelopedData(PKCS7* pkcs7, byte* pkiMsg, word32 pkiMsgSz, <br/></p>
<p class="paragraph_style_9">byte* output, word32 outputSz);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Description:<br/></p>
<p class="paragraph_style_9">This function unwraps and decrypts a PKCS7 enveloped data content type, decoding the message into output. It uses the private key of the PKCS7 object passed in to decrypt the message.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Return Values:<br/></p>
<p class="paragraph_style_9">On successfully extracting the information from the message, returns the <span class="style_3">bytes</span> written to output<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: Returned if one of the input parameters is invalid<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_PARSE_E</span>: Returned if there is an error parsing from the given pkiMsg<br/></p>
<p class="paragraph_style_9"><span class="style_3">PKCS7_OID_E</span>: Returned if the given pkiMsg is not an enveloped data type<br/></p>
<p class="paragraph_style_9"><span class="style_3">ASN_VERSION_E</span>: Returned if the PKCS7 signer info is not version 0<br/></p>
<p class="paragraph_style_9"><span class="style_3">MEMORY_E</span>: Returned if there is an error allocating memory<br/></p>
<p class="paragraph_style_9"><span class="style_3">ALGO_ID_E</span>: Returned if the PKCS7 structure is using an unsupported algorithm type. Currently, only DESb and DES3b are supported for encryption, with RSAk for signature generation<br/></p>
<p class="paragraph_style_9"><span class="style_3">PKCS7_RECIP_E</span>: Returned if there is no recipient found in the enveloped data that matches the recipient provided<br/></p>
<p class="paragraph_style_9"><span class="style_3">RSA_BUFFER_E</span>: Returned if there is an error during RSA signature verification<br/></p>
<p class="paragraph_style_9"><span class="style_3">MP_INIT_E</span>, <span class="style_3">MP_READ_E</span>, <span class="style_3">MP_CMP_E</span>, <span class="style_3">MP_INVMOD_E</span>, <span class="style_3">MP_EXPTMOD_E</span>, <span class="style_3">MP_MOD_E</span>, <span class="style_3">MP_MUL_E</span>, <span class="style_3">MP_ADD_E</span>, <span class="style_3">MP_MULMOD_E</span>, <span class="style_3">MP_TO_E</span>, and <span class="style_3">MP_MEM</span> may be returned if there is an error during signature verification<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">pkcs7</span> - pointer to the PKCS7 structure containing the private key with which to decode the enveloped data package<br/></p>
<p class="paragraph_style_9"><span class="style_3">pkiMsg</span> - pointer to the buffer containing the enveloped data package<br/></p>
<p class="paragraph_style_9"><span class="style_3">pkiMsgSz</span> - size of the enveloped data package<br/></p>
<p class="paragraph_style_9"><span class="style_3">output</span> - pointer to the buffer in which to store the decoded message<br/></p>
<p class="paragraph_style_9"><span class="style_3">outputSz</span> - size available in the output buffer<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">Example:<br/></p>
<p class="paragraph_style_13">PKCS7 pkcs7;<br/></p>
<p class="paragraph_style_13">byte received[] = { /* initialize with received enveloped message */ };<br/></p>
<p class="paragraph_style_13">byte decoded[FOURK_BUF];<br/></p>
<p class="paragraph_style_13">int decodedSz;<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">// initialize pkcs7 with certificate<br/></p>
<p class="paragraph_style_13">// update key<br/></p>
<p class="paragraph_style_13">pkcs7.privateKey = key;<br/></p>
<p class="paragraph_style_13">pkcs7.privateKeySz = keySz;<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13">decodedSz = wc_PKCS7_DecodeEnvelopedData(&amp;pkcs7, received, sizeof(received),decoded, sizeof(decoded));<br/></p>
<p class="paragraph_style_13">if ( decodedSz != 0 ) {<br/></p>
<p class="paragraph_style_13">// error decoding message<br/></p>
<p class="paragraph_style_13">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12">See Also:<br/></p>
<p class="paragraph_style_9">wc_PKCS7_InitWithCert, wc_PKCS7_EncodeEnvelopedData<br/></p>
<p class="paragraph_style_10"><br/></p>
<div class="paragraph paragraph_style_10"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_18.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
</div>
<div style="clear: both; height: 0px; line-height: 0px; " class="tinyText"> </div>
</div>
</div>
<div style="height: 16px; width: 20px;  height: 16px; left: 706px; position: absolute; top: 51px; width: 20px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 20px; ">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/shapeimage_19.png" alt="" style="height: 16px; left: 0px; position: absolute; top: 0px; width: 20px; "/>
</div>
</div>
<div style="height: 19px; width: 19px;  height: 19px; left: 707px; position: absolute; top: 25px; width: 19px; z-index: 1; " class="tinyText style_SkipStroke_2">
<img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/United%20Kingdom(Great%20Britain).png" alt="" style="border: none; height: 19px; width: 19px; "/>
</div>
<div id="id16" style="height: 23px; left: 328px; position: absolute; top: 48px; width: 258px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_258_23" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_14">Questions? +1 (425) 245-8247</p>
</div>
</div>
</div>
<div style="height: 19px; width: 19px;  height: 19px; left: 685px; position: absolute; top: 25px; width: 19px; z-index: 1; " class="tinyText style_SkipStroke_2">
<a href="http://www.wolfssl.jp/" title="http://www.wolfssl.jp"><img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/japan.png" alt="" style="border: none; height: 19px; width: 19px; "/></a>
</div>
<div id="id17" style="height: 28px; left: 593px; position: absolute; top: 44px; width: 119px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_119_28" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_15"><a class="class13" title="https://www.wolfssl.com/forums" href="https://www.wolfssl.com/forums">Support <span class="style_4">Forums</span></a></p>
</div>
</div>
</div>
<div id="id18" style="height: 27px; left: 59px; position: absolute; top: 190px; width: 342px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_342_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_16"><a class="class14" title="https://www.wolfssl.com/documentation/wolfSSL-Manual.pdf" href="https://www.wolfssl.com/documentation/wolfSSL-Manual.pdf">Download wolfSSL Manual (PDF)</a></p>
</div>
</div>
</div>
<div style="height: 121px; width: 155px;  height: 121px; left: 32px; position: absolute; top: 5px; width: 155px; z-index: 1; " class="tinyText style_SkipStroke_2">
<a href="Home.html" title="Home.html"><img src="Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7_files/wolfssl_logo.png" alt="" style="border: none; height: 121px; width: 156px; "/></a>
</div>
<div style="height: 5103px; line-height: 5103px; " class="spacer"> </div>
</div>
<div style="height: 114px; margin-left: 0px; position: relative; width: 770px; z-index: 15; " id="footer_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div id="id19" style="height: 27px; left: 634px; position: absolute; top: 47px; width: 102px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_102_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_4"><a class="class15" title="Docs-wolfssl-manual-18-32-wolfcrypt-api-poly1305.html" href="Docs-wolfssl-manual-18-32-wolfcrypt-api-poly1305.html">Next Chapter</a></p>
</div>
</div>
</div>
<div id="id20" style="height: 25px; left: 35px; position: absolute; top: 47px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_17"><a class="class16" title="Docs-wolfssl-manual-18-30-wolfcrypt-api-memory.html" href="Docs-wolfssl-manual-18-30-wolfcrypt-api-memory.html">Previous Chapter</a></p>
</div>
</div>
</div>
<div id="id21" style="height: 25px; left: 323px; position: absolute; top: 47px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_6"><a class="class17" title="Docs-wolfssl-manual-toc.html" href="Docs-wolfssl-manual-toc.html">Table of Contents</a></p>
</div>
</div>
</div>
<div id="id22" style="height: 29px; left: 35px; position: absolute; top: 85px; width: 701px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_701_29" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_18">Copyright 2017 wolfSSL Inc.  All rights reserved.</p>
</div>
</div>
</div>
</div>
</div>
</div>
 </body>

<!-- Mirrored from www.wolfssl.com/wolfSSL/Docs-wolfssl-manual-18-31-wolfcrypt-api-pkcs7.html by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 17 Jan 2017 13:45:01 GMT -->
</html>
